<!DOCTYPE html>
<html lang="zh" dir="ltr">
<head>
  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="目录结构 # New Project Scaffolding # . ├── examples ├── src │ ├── apis │ ├── database │ ├── model │ ├── services │ ├── config.py │ ├── config.yaml │ ├── config-sample.yaml │ └── main.py └── requirements.txt Diretory Structure Explained # examples # 这里">
<meta name="theme-color" content="#FFFFFF">
<meta name="color-scheme" content="light dark"><meta property="og:title" content="目录结构" />
<meta property="og:description" content="" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://blog.echosec.top/epic-awesome-gamer/zh/docs/player/getting-started/directory-structure/" />

<title>目录结构 | Epic 免费人</title>
<link rel="manifest" href="/epic-awesome-gamer/manifest.json">
<link rel="icon" href="/epic-awesome-gamer/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/epic-awesome-gamer/book.min.31cccedbc2b6812eb37d0d37cdf4cb30cb89bd41421d3d51da624e11baccfe92.css" integrity="sha256-MczO28K2gS6zfQ03zfTLMMuJvUFCHT1R2mJOEbrM/pI=" crossorigin="anonymous">
  <script defer src="/epic-awesome-gamer/flexsearch.min.js"></script>
  <script defer src="/epic-awesome-gamer/zh.search.min.37bd0acc34a0592786870ee114abc900e147d33f33ad53fa82ad3f1b97eff5da.js" integrity="sha256-N70KzDSgWSeGhw7hFKvJAOFH0z8zrVP6gq0/G5fv9do=" crossorigin="anonymous"></script>

  <script defer src="/epic-awesome-gamer/sw.min.fce957f404884887d3e2471bff9b46e9879d096ba64fd4ac8f550d0dd48d105a.js" integrity="sha256-/OlX9ASISIfT4kcb/5tG6YedCWumT9Ssj1UNDdSNEFo=" crossorigin="anonymous"></script>
<link rel="alternate" type="application/rss+xml" href="https://blog.echosec.top/epic-awesome-gamer/zh/docs/player/getting-started/directory-structure/index.xml" title="Epic 免费人" />
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
  
</head>
<body dir="ltr">
  <input type="checkbox" class="hidden toggle" id="menu-control" />
  <input type="checkbox" class="hidden toggle" id="toc-control" />
  <main class="container flex">
    <aside class="book-menu">
      <div class="book-menu-content">
        
  <nav>
<h2 class="book-brand">
  <a class="flex align-center" href="/epic-awesome-gamer/zh/"><span>Epic 免费人</span>
  </a>
</h2>


<div class="book-search">
  <input type="text" id="book-search-input" placeholder="搜索" aria-label="搜索" maxlength="64" data-hotkeys="s/" />
  <div class="book-search-spinner hidden"></div>
  <ul id="book-search-results"></ul>
</div>



  



  
    
  



<ul class="book-languages">
  <li>
    <input type="checkbox" id="languages" class="toggle" />
    <label for="languages" class="flex justify-between">
      <a role="button" class="flex align-center">
        <img src="/epic-awesome-gamer/svg/translate.svg" class="book-icon" alt="Languages" />
        简体中文
      </a>
    </label>

    <ul>
      
      <li>
        <a href="https://blog.echosec.top/epic-awesome-gamer/">
          English
        </a>
      </li>
      
    </ul>
  </li>
</ul>











  



  
  <ul>
    
      
        <li class="book-section-flat" >
          
  
  

  
    <input type="checkbox" id="section-b900152bb5efd8f491d123b5f73aa30d" class="toggle"  />
    <label for="section-b900152bb5efd8f491d123b5f73aa30d" class="flex justify-between">
      <a role="button" class="">使用指南</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="https://blog.echosec.top/epic-awesome-gamer/zh/docs/user/quick-start/" class="">快速上手</a>
  

          
  <ul>
    
  </ul>

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li class="book-section-flat" >
          
  
  

  
    <input type="checkbox" id="section-27d250f93b10a45d08befdb5dd2f0f3b" class="toggle" checked />
    <label for="section-27d250f93b10a45d08befdb5dd2f0f3b" class="flex justify-between">
      <a role="button" class="">开发指南</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-a467ca43dbcdaf2ffbd8aeecc80a9440" class="toggle" checked />
    <label for="section-a467ca43dbcdaf2ffbd8aeecc80a9440" class="flex justify-between">
      <a role="button" class="">开始使用</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="https://blog.echosec.top/epic-awesome-gamer/zh/docs/player/getting-started/install-v2rss/" class="">源码下载</a>
  

          
  <ul>
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="https://blog.echosec.top/epic-awesome-gamer/zh/docs/player/getting-started/basic-usage/" class="">基本用法</a>
  

          
  <ul>
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="https://blog.echosec.top/epic-awesome-gamer/zh/docs/player/getting-started/directory-structure/" class=" active">目录结构</a>
  

          
  <ul>
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="https://blog.echosec.top/epic-awesome-gamer/zh/docs/player/getting-started/configuration/" class="">项目配置</a>
  

          
  <ul>
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <span>Overview</span>
  

          
  <ul>
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <span>Quick Start</span>
  

          
  <ul>
    
  </ul>

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-02591bebd5ca01427869ded3401321a8" class="toggle"  />
    <label for="section-02591bebd5ca01427869ded3401321a8" class="flex justify-between">
      <a role="button" class="">脚手架指令</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <a href="https://blog.echosec.top/epic-awesome-gamer/zh/docs/player/cli/overview/" class="">Overview</a>
  

          
  <ul>
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="https://blog.echosec.top/epic-awesome-gamer/zh/docs/player/cli/ping/" class="">Scaffold Ping</a>
  

          
  <ul>
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <a href="https://blog.echosec.top/epic-awesome-gamer/zh/docs/player/cli/deploy/" class="">Scaffold Deploy</a>
  

          
  <ul>
    
  </ul>

        </li>
      
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <input type="checkbox" id="section-723140cbe530ea3669e1696982bbe922" class="toggle"  />
    <label for="section-723140cbe530ea3669e1696982bbe922" class="flex justify-between">
      <a role="button" class="">托管 &amp; 部署</a>
    </label>
  

          
  <ul>
    
      
        <li>
          
  
  

  
    <span>V2rss Deploy</span>
  

          
  <ul>
    
  </ul>

        </li>
      
    
      
        <li>
          
  
  

  
    <span>Host on GitHub</span>
  

          
  <ul>
    
  </ul>

        </li>
      
    
  </ul>

        </li>
      
    
  </ul>

        </li>
      
    
  </ul>











  
<ul>
  
  <li>
    <a href="https://blog.echosec.top" target="_blank" rel="noopener">
        Blog
      </a>
  </li>
  
  <li>
    <a href="https://github.com/QIN2DIM/epic-awesome-gamer/" target="_blank" rel="noopener">
        GitHub
      </a>
  </li>
  
  <li>
    <a href="https://github.com/QIN2DIM/epic-awesome-gamer/issues" target="_blank" rel="noopener">
        Discussions
      </a>
  </li>
  
  <li>
    <a href="https://t.me/joinchat/HlB9SQJubb5VmNU5" target="_blank" rel="noopener">
        TG Studio
      </a>
  </li>
  
</ul>






</nav>




  <script>(function(){var a=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(b){localStorage.setItem("menu.scrollTop",a.scrollTop)}),a.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>


 
      </div>
    </aside>

    <div class="book-page">
      <header class="book-header">
        
  <div class="flex align-center justify-between">
  <label for="menu-control">
    <img src="/epic-awesome-gamer/svg/menu.svg" class="book-icon" alt="Menu" />
  </label>

  <strong>目录结构</strong>

  <label for="toc-control">
    
  </label>
</div>
<link rel="stylesheet" href="//cdn.bootcss.com/font-awesome/4.3.0/css/font-awesome.min.css">

  
 
      </header>

      
      
  <article class="markdown"><h1 id="目录结构">
  目录结构
  <a class="anchor" href="#%e7%9b%ae%e5%bd%95%e7%bb%93%e6%9e%84">#</a>
</h1>
<h2 id="new-project-scaffolding">
  New Project Scaffolding
  <a class="anchor" href="#new-project-scaffolding">#</a>
</h2>
<pre tabindex="0"><code class="language-asp" data-lang="asp">.
├── examples
├── src
│   ├── apis
│   ├── database
│   ├── model
│   ├── services
│   ├── config.py
│   ├── config.yaml
│   ├── config-sample.yaml
│   └── main.py
└── requirements.txt
</code></pre><h2 id="diretory-structure-explained">
  Diretory Structure Explained
  <a class="anchor" href="#diretory-structure-explained">#</a>
</h2>
<h3 id="examples">
  examples
  <a class="anchor" href="#examples">#</a>
</h3>
<p>这里存放一些精简化的后端功能接口，玩家可通过这些运行案例迅速了解服务间的层级关系以及核心业务的实现逻辑。</p>
<h3 id="srcapis">
  src/apis
  <a class="anchor" href="#srcapis">#</a>
</h3>
<p>存放全局接口函数，如一些复杂的脚手架接口逻辑会在此编排。</p>
<h3 id="srcdatabase">
  src/database
  <a class="anchor" href="#srcdatabase">#</a>
</h3>
<p>存放系统运行缓存。在项目初始化后，此文件夹被自动创建。</p>
<h3 id="srcmodel">
  src/model
  <a class="anchor" href="#srcmodel">#</a>
</h3>
<p>存放 <code>YOLOv4</code> 目标检测模型。在项目初始化后，此文件夹被自动创建。</p>
<h3 id="srcservices">
  src/services
  <a class="anchor" href="#srcservices">#</a>
</h3>
<p>存放核心业务代码，包括如下内容：</p>
<pre tabindex="0"><code>.
├── bricklayer
│   ├── __init__.py
│   ├── core.py
│   └── exceptions.py
├── explorer
│   ├── __init__.py
│   ├── core.py
│   └── exceptions.py
├── utils
│   ├── accelerator
│   ├── armor
│   ├── toolbox
│   └── __init__.py
├── __init__.py
├── deploy.py
├── scaffold.py
└── settings.py
</code></pre><ul>
<li>
<p>bricklayer</p>
<p>采集器逻辑层代码。<code>core.py</code> 存放核心业务代码，包含采集器整个周期的行为函数；<code>actions.py</code> 维护一个  <code>__entropy__</code> 本地采集队列，存放着采集实例的上下文摘要信息；<code>operator.py</code> 存放着一个接口解释器，输入 <code>atomic_context</code> ，输出一个特征完整的采集实例；<code>exceptions.py</code> 存放采集器运行时常见的报错类型。</p>
</li>
<li>
<p>explorer</p>
<p>订阅解耦器，核心功能是清楚失效订阅。</p>
</li>
<li>
<p>utils</p>
<p>可移植模组。</p>
</li>
<li>
<p>deploy.py</p>
<p>系统任务的调度中心。</p>
</li>
<li>
<p>scaffold.py</p>
<p>脚手架源码。</p>
</li>
<li>
<p>settings.py</p>
<p>系统设置。设定全局变量用于精确的绝对路径定位，初始化系统日志，引用 <code>src/config.py</code> 中的配置信息。</p>
</li>
</ul>
<h3 id="srcconfigyaml">
  src/config.yaml
  <a class="anchor" href="#srcconfigyaml">#</a>
</h3>
<p>项目配置文件。在项目初始化后，从 <code>src/config_sample.yaml</code> 拷贝生成。 <code>src/config.py</code> 的功能是读取配置信息并转义成 Python 全局变量。</p>
<p>关于配置文件的具体介绍可见「
  <a href="/epic-awesome-gamer/zh/docs/player/getting-started/configuration/">CONFIGURATION</a>」。</p>
<h3 id="srcmainpy">
  src/main.py
  <a class="anchor" href="#srcmainpy">#</a>
</h3>
<p>脚手架入口文件，作为运行根辐射系统指令，在脚手架未编译前，作为系统指令的统一入口。</p>
</article>
 
      

      <footer class="book-footer">
        
  <div class="flex flex-wrap justify-between">




  <div>
    <a class="flex align-center" href="https://github.com/qin2dim/v2rss-docs/tree/main/content.zh/docs/player/getting-started/directory-structure/_index.md" target="_blank" rel="noopener">
      <img src="/epic-awesome-gamer/svg/edit.svg" class="book-icon" alt="Edit" />
      <span>编辑本页</span>
    </a>
  </div>


</div>



  <script>(function(){function a(c){const a=window.getSelection(),b=document.createRange();b.selectNodeContents(c),a.removeAllRanges(),a.addRange(b)}document.querySelectorAll("pre code").forEach(b=>{b.addEventListener("click",function(c){a(b.parentElement),navigator.clipboard&&navigator.clipboard.writeText(b.parentElement.textContent)})})})()</script>


 
        
      </footer>

      
  
  <div class="book-comments">

</div>
  
 

      <label for="menu-control" class="hidden book-menu-overlay"></label>
    </div>

    
  </main>

  
</body>
</html>












